#include "log.h"

struct Foo {
  int32_t i32 = -10;
  uint64_t ui64 = 1234;
  double db = 3.1415926;
  bool bl = true;
  std::wstring str = L"cat";
  const wchar_t* ch = L"dog";
};

int test_main() {
  // std::wstring path = std::filesystem::path(__FILE__).parent_path().string();

  // if (!logger::Logger::Instance()->Init(path + "/conf/logger.conf")) {
  if (!wlogger::Logger::Instance()->Init(0, "./log", "logger.log", 1)) {
    // LogError("init logger fail, print to console");
  }

  // // 格式化字符串日志
  // LogInfo(L"info message");
  // LogDebug(L"debug message");
  // LogInfo(L"name:%s age:%d weight:%.1f", "tomocat", 26, 56.23);
  // LogWarn(L"warn message");
  // LogError(L"error message");
  // LogErrorWithTag(L"err_tag", "error message with tag, type:%s length:%d", "pencil", 17);

  // 流式日志
  WLOG_INFO << L"double: " << 3.14 << L", int64_t:" << -801;
  WLOG_WARN << L"warn message";
  WLOG_ERROR << L"error message";

  // // KV 日志
  // Foo foo;
  // LogInfoKV(L"example_prefix")
  //     .LogKV(L"int32_data", foo.i32)
  //     .LogKV(L"uint64_data", foo.ui64)
  //     .LogKV(L"double_data", foo.db)
  //     .LogKV(L"bool_data", foo.bl)
  //     .LogKV(L"string_data", foo.str)
  //     .LogKV(L"char_data", foo.ch)
  //     .LogKV(L"float_format_data=%.2f", foo.db);

  // // Fatal 日志
  // LogFatal("x must be larger than 0!");

  // 断言
  // CHECK(false);
  // CHECK_EQ(3, 4);
  // CHECK_NOTNULL(nullptr);
}
